/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package co.edu.senaclem.logica;

import co.edu.senaclem.modelo.AsignaFichas;
import co.edu.senaclem.modelo.FichaTitulacion;
import co.edu.senaclem.modelo.Instructor;
import co.edu.senaclem.persistencia.IFichaTitulacionDAO;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;

/**
 *
 * @author DILOVE
 */
@Stateless
public class FichaLogica implements FichaLogicaLocal {

    @EJB
    private IFichaTitulacionDAO fichaDAO;
    
    @Override
    public void registrar(FichaTitulacion ficha) throws Exception {
        validarDatosFicha(ficha);
        //consulta si la ficha ya Existe
        FichaTitulacion entityFichaTitulacion = fichaDAO.consultarPorId(ficha.getFicha());
        if(entityFichaTitulacion!=null){
            throw new Exception("La Ficha Ya Existe!"); 
        }
        
        fichaDAO.insertar(ficha);        
    }

    @Override
    public void modificar(FichaTitulacion ficha) throws Exception {
        validarDatosFicha(ficha);
        //consulta si el instructor ya Existe
        FichaTitulacion entityFicha = fichaDAO.consultarPorId(ficha.getFicha());
        if(entityFicha==null){
            throw new Exception("La Ficha a Modificar no Existe"); 
        }
        //se envia el objeto entity a modificar porque es quien tiene el valor del cliente si existe
        entityFicha.setFicha(ficha.getFicha());
        entityFicha.setJornada(ficha.getJornada());
        entityFicha.setCodigoPrograma(ficha.getCodigoPrograma());
        //Modificar
        fichaDAO.modificar(entityFicha);
    }

    @Override
    public void eliminar(FichaTitulacion ficha) throws Exception {
        if(ficha==null) {
            throw new Exception("La Ficha es Nula!");
        }
        
        if(ficha.getFicha()==0) {
            throw new Exception("La Ficha es Obligatoria!");
        }
        //consulta si la ficha ya Existe
        FichaTitulacion entityFicha = fichaDAO.consultarPorId(ficha.getFicha());
        if(entityFicha==null){
            throw new Exception("La Ficha No Existe!"); 
        }
        //Eliminar
        fichaDAO.eliminar(entityFicha);
    }

    @Override
    public FichaTitulacion consultarPorId(Integer fichatitulacion) throws Exception {
        if(fichatitulacion==null || fichatitulacion==0){
            throw new Exception("La Ficha es Obligatoria!");
        }
        return fichaDAO.consultarPorId(fichatitulacion);
    }

    @Override
    public List<FichaTitulacion> consultar() throws Exception {
       return fichaDAO.consultar();
    }

    private void validarDatosFicha(FichaTitulacion fichatitulacion) throws Exception
    {
        if(fichatitulacion==null)
        {
            throw new Exception("La Ficha es Nula!");
        }
        if(fichatitulacion.getFicha()==0){
            throw new Exception("La Ficha de la Titulación es Obligatoria!");
        }
        if(fichatitulacion.getJornada()==null || fichatitulacion.getJornada().equals("")==true) {
            throw new Exception("La Jornada es Obligatoria!");
        }   
    }

    @Override
    public void asignarFichas(AsignaFichas asignafichas) throws Exception {        
        //System.out.println("Asignar fichas en Logica "+asignafichas.toString());        
        fichaDAO.registrarFichas(asignafichas);
          
    }

    @Override
    public List<FichaTitulacion> consultarDisponibles(Instructor instructor) throws Exception{
        return fichaDAO.consultarDisponibles(instructor);
    }

    @Override
    public List<FichaTitulacion> consultarAsignadas(Instructor instructor) throws Exception {
        return fichaDAO.consultarAsignadas(instructor);
    }

    @Override
    public void retirarFichas(AsignaFichas asignafichas) throws Exception {
        //System.out.println("Asignar fichas en Logica "+asignafichas.toString());        
        fichaDAO.retirarFichas(asignafichas);   
    }

}
